package com.quanyan.stadium.service;

import com.quanyan.api.APIResponse;
import com.quanyan.common.Plugin.PageObj;
import com.quanyan.stadium.api.req.*;
import com.quanyan.stadium.api.resp.*;
import com.quanyan.stadium.entity.TbDatesportJoinInfo;
import com.quanyan.stadium.entity.TbDatesportNoticeInfo;

import java.util.List;

/**
 * 约运动service
 * Created by Zheng.Ke
 * Date 2016/7/7.
 */
public interface DatesportService {
    /**
     * 创建活动通知接口
     * @param reqDatesportNotice
     * @param uid
     * @return
     */
    APIResponse<TbDatesportNoticeInfo> createDatesportNotice(ReqDatesportNotice reqDatesportNotice, int uid);

    /**
     * 查到活动下的通知
     * @param datesportId
     * @param isDelete
     * @return
     */
    List<TbDatesportNoticeInfo> findNoticeInfoByDatesportId(int datesportId, boolean isDelete);

    /**
     * 创建活动标签接口
     * @param reqDatesportLabelInfo
     * @return
     */
    APIResponse<?> createDatesportLabel(ReqDatesportLabelInfo reqDatesportLabelInfo);

    /**
     * 创建活动设定信息接口
     * @param reqDatesportSetInfo
     * @return
     */
    APIResponse<?> createDatesportSet(ReqDatesportSetInfo reqDatesportSetInfo);

    /**
     * 约运动详情
     * @param reqDatesportDetail
     * @return
     */
    APIResponse<RespDatesportDetail> datesportDetail(ReqDatesportDetail reqDatesportDetail);

    /**
     * 获取约运动推荐人接口
     * @param reqRecommendInfo
     * @return
     */
    APIResponse<RespRecommendInfo> recommendInfo(ReqRecommendInfo reqRecommendInfo);

    /**
     * 邀请用户接口
     * @param datesportId
     * @param invitedUid  受邀请者
     * @param uid   发送邀请者
     * @return
     */
    APIResponse<RespInvitePeople> invitePeople(int datesportId, int invitedUid, int uid);

    /**
     * 更新用户的活动状态位
     * @param reqUpdateUserDatesportStatus
     * @return
     */
    APIResponse<?> updateUserDatesportStatus(ReqUpdateUserDatesportStatus reqUpdateUserDatesportStatus);

    /**
     * 搜索约运动列表
     * @param reqQueryDatesport
     * @param uid
     * @return
     */
    APIResponse<List<RespQueryDatesportItem>> queryDatesport(ReqQueryDatesport reqQueryDatesport, Integer uid);

    /**
     * 查找用户所参加的约运动列表
     * @param uid
     * @param pageNum
     *@param uid  @return
     */
    APIResponse<List<RespQueryDatesportItem>> queryMyDatesport(int uid, int pageNum, int pageSize);

    /**
     * 获取已参加约运动的成员列表
     * @param datesportId
     * @param pageNum
     * @param pageSize
     * @return
     */
    APIResponse<PageObj<List<RespJoinedInfo>>> getJoinedList(int datesportId, int pageNum, int pageSize);

    /**
     * 刷新成员信息
     * @param datesportId
     */
    void refreshMembersInfo(int datesportId);

    /**
     * 取消约运动
     * @param datesportId
     * @param uid
     * @return
     */
    APIResponse<?> cancelDatesport(int datesportId, int uid);

}
